package basic.Generic;


import java.util.ArrayList;
import java.util.List;

//测试不采用泛型抛出异常
public class ClassCastExceptionDemo {

//    毫无疑问，程序的运行结果会以崩溃结束：
//    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
//    ArrayList可以存放任意类型，例子中添加了一个String类型，添加了一个Integer类型，再使用时都以String的方式使用，因此程序崩溃了。
    public void run(){
        List arrayList = new ArrayList();
        arrayList.add("aaaa");
        arrayList.add(100);

        for(int i = 0; i< arrayList.size();i++){
            String item = (String)arrayList.get(i);
            System.out.println("泛型测试，item:"+item);
        }
    }

// 为了解决类似这样的问题（在编译阶段就可以解决），泛型应运而生。
//    我们将第一行声明初始化list的代码更改一下，编译器会在编译阶段就能够帮我们发现类似这样的问题。
//    增加泛型之后，如果参数类型不同，编译器会报错
    public void generic(){
        List<String> arrayList = new ArrayList<String>();
//            arrayList.add(100); 在编译阶段，编译器就会报错
    }
}
